﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： MeshRenderer.hpp
// 作者：   671643387@qq.com
// 日期：   2015年11月1日 下午7:06:40
// 简介：   
///////////////////////////////////////////////////////////////////////////////

#if !defined(GRAPHICS_GRAPHICS_COMPONENT_MESHRENDERER_HPP_)
#define GRAPHICS_GRAPHICS_COMPONENT_MESHRENDERER_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>

#include <graphics/Type.hpp>
#include <graphics/Component.hpp>
#include <graphics/graphics/component/Mesh.hpp>

namespace graphics
{
    namespace graphics
    {
        namespace component
        {
            class Buffer
            {
            public:
                Buffer(void){}
                virtual ~Buffer(){}

            public:
                virtual void* GetVertices(void) = 0;
                virtual void* GetIndices(void) = 0;
            };

            typedef boost::shared_ptr<Buffer> BufferPtr;

            class MeshRenderer : public ::graphics::Component
            {
            public:
                typedef struct _stProperties
                {
                    void* vp;
                    ::graphics::size_t vpSize;
                    void* ip;
                    ::graphics::size_t ipSize;
                    int fvf;
                    ::graphics::graphics::component::Mesh::IndexType indexType;
                }stProperties;

            public:
                MeshRenderer(void);
                virtual ~MeshRenderer(void);

            public:
                virtual void Render(void);

            private:
                bool CheckBuffer_(void);

            private:
                BufferPtr buffer_;
            };
        }
    }
}

#endif //GRAPHICS_GRAPHICS_COMPONENT_MESHRENDERER_HPP_
